package com.uzai.console.service.user;

import com.uzai.common.entity.WechatUser;
import com.uzai.console.dto.user.wechatuser.*;
import org.springframework.transaction.annotation.Transactional;

/**
 * @author liuqi
 * @date 2021年08月25日 20:17
 */
public interface WechatUserTreeInfoService {

    /**
     * 修改个人微信会员身份
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param updateIdentityDto
     * @return null
     */
    void updateIdentity(UpdateIdentityDto updateIdentityDto);

    /**
     * 修改上级买家-处理树
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param updateParentDto
     * @return null
     */
    void updateParent(UpdateParentDto updateParentDto);

    /**
     * 修改代理-处理树
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param updateParentDto
     * @return null
     */
    void updateAgent(UpdateAgentDto updateParentDto);

    /**
     * 修改合伙人
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param updatePartnerDto
     * @return null
     */
    void updatePartner(UpdatePartnerDto updatePartnerDto);

    /**
     * 买家转代理
     * 1: 批量将下N级所有买家的代理设置为此Id，代理树也更新, 满足条件：A:买家树包含此ID，
     * 将上面批量修改操作拆分成查询出需要修改的会员列表，依次循环单个修改
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param id
     * @return null
     */
    void batchUpdateAgentInfoFromParentInfo(Long id, String agentInfo_son, Long merId);

    /**
     * 买家转代理
     * 2：修改下N级买家树（从此用户开始清空）
     * 将上面批量修改操作拆分成查询出需要修改的会员列表，依次循环单个修改
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param merId
     * @return null
     */
    void batchUpdateParentInfo(String parentInfoOld, String parentInfoNew, Long merId, boolean underline);

    /**
     * 买家转代理
     * 4：将下N级代理和下N级代理的树更新
     * 将上面批量修改操作拆分成查询出需要修改的会员列表，依次循环单个修改
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param merId
     * @return null
     */
    void batchUpdateAgentInfo(String agentInfoOld, String agentInfoNew, Long merId, boolean underline);

}
